import os
import shutil
import pandas as pd


def move_folders_from_csv(root_dir, csv_path, target_dir):
    """
    从 root_dir 下递归搜索 CSV 中的文件夹，并移动到 target_dir。

    :param root_dir: 原始文件夹路径
    :param csv_path: 包含要移动的文件夹名的 CSV（假设第一列是文件夹名）
    :param target_dir: 目标路径
    """
    ################################################################
    ####################默认csv中列表第一行是标题#######################
    ################################################################
    # 读取CSV中的文件夹名
    df = pd.read_csv(csv_path)
    folder_names = df.iloc[:, 0].astype(str).tolist()

    # 确保目标文件夹存在
    os.makedirs(target_dir, exist_ok=True)

    moved = []
    not_found = []

######文件名######################################
    # 遍历整个目录树查找
    # for root, dirs, files in os.walk(root_dir):
    #     for d in dirs:
    #         if d in folder_names:
    #             src_path = os.path.join(root, d)
    #             dst_path = os.path.join(target_dir, d)
    #
    #             if os.path.exists(dst_path):
    #                 print(f"⚠️ 目标目录已存在: {dst_path}，跳过该文件夹")
    #                 continue
    #
    #             shutil.move(src_path, dst_path)
    #             moved.append(d)
    #
    # # 记录没找到的
    # for name in folder_names:
    #     if name not in moved:
    #         not_found.append(name)
    #
    # print(f"✅ 已移动 {len(moved)} 个文件夹: {moved}")
    # if not_found:
    #     print(f"❌ 未找到的文件夹: {not_found}")

##############文件路径################################################
    # # 遍历整个目录树查找
    for root, dirs, files in os.walk(root_dir):
        for d in dirs:
            d_path = os.path.join(root, d)
            if d_path in folder_names:

                dst_path = os.path.join(target_dir, d)

                if os.path.exists(dst_path):
                    print(f"⚠️ 目标目录已存在: {dst_path}，跳过该文件夹")
                    continue

                shutil.move(d_path, dst_path)
                moved.append(d_path)

    # 记录没找到的
    for name in folder_names:
        if name not in moved:
            not_found.append(name)

    print(f"✅ 已移动 {len(moved)} 个文件夹: {moved}")
    if not_found:
        print(f"❌ 未找到的文件夹: {not_found}")

############################################################

# 示例调用
if __name__ == "__main__":
    root_dir = r"/media/imed/d9f520b2-6e7a-4842-af77-fba3ad2d8d27/12222"  # 你的根目录
    csv_path = r"/media/imed/d9f520b2-6e7a-4842-af77-fba3ad2d8d27/heart-ca-project/ExtendScripts/HelpScripts/L.csv"  # CSV 文件
    target_dir = r"/media/imed/d9f520b2-6e7a-4842-af77-fba3ad2d8d27/12222_to"  # 目标目录

    move_folders_from_csv(root_dir, csv_path, target_dir)